package model

import (
	"gorm.io/gorm"
)

type Userinfo struct { // 默认的表名是userinfos
	gorm.Model
	Name string
	Age  uint
}

// 想要指定表名需要结构体写方法返回表名
func (Userinfo) TableName() string {
	return "userinfos"
}

type StuInfo struct {
	// 默认情况下，名为 `ID` 的字段会作为表的主键
	// 如果你当前的表主键不是 id 字段，那么你可以通过 primaryKey标签将其它字段设为主键：   UUID   string `gorm:"primaryKey"`
	// 复合主键  ID           string `gorm:"primaryKey"`
	// 复合主键 LanguageCode string `gorm:"primaryKey"`
	// 整型 PrioritizedPrimaryField 启用AutoIncrement，要禁用它，铁子们需要为整型字段关闭 autoIncrement      CategoryID uint64 `gorm:"primaryKey;autoIncrement:false"`
	gorm.Model
	Name      string `gorm:"column:name"`
	Class     string `gorm:"column:class"`
	StudentId string `gorm:"column:student_id"`
}

func (StuInfo) TableName() string {
	return "stu_info"
}

// 使用GORM 通过在 struct 上定义自定义的 gorm 标签来实现自动化创建表的功能：
//type User struct {
//	Name string  `gorm:"size:255"` //string默认长度255,size重设长度
//	Age int `gorm:"column:my_age"` //设置列名为my_age
//	Num int  `gorm:"AUTO_INCREMENT"` //自增
//	IgnoreMe int `gorm:"-"` // 忽略字段
//	Email string `gorm:"type:varchar(100);unique_index"` //type设置sql类型，unique_index为该列设置唯一索引
//	Address string `gorm:"not null;unique"` //非空
//	No string `gorm:"index:idx_no"` // 创建索引并命名，如果有其他同名索引，则创建组合索引
//	Remark string `gorm:"default:''"` //默认值
//}

type BlogArticle struct {
	// 返回的时候不展示
	gorm.Model       `json:"-"`
	Title            string    `json:"title" form:"title"`
	Content          string    `json:"content" form:"content"`
	PushTime         *DateTime `json:"pushTime" form:"pushTime"`
	TopTime          *DateTime `json:"topTime" form:"topTime"`
	Cover            string    `json:"cover" form:"cover"`
	State            int       `json:"state" form:"state"`
	PageViewCount    int       `json:"pageViewCount" form:"pageViewCount"`
	LikesCount       int       `json:"likesCount" form:"likesCount"`
	ClassificationId *int      `json:"classificationId" form:"classificationId"`
}

func (BlogArticle) TableName() string {
	// 结构体对应的表明
	return "blog_article"
}
